package com.hs.server.domain;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.ToString;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Date;


/**
 * @Description 智能审核车辆信息表
 * @Author: chenjiarui
 * @Date: 2021-07-06 11:42
 */
@Data
public class VehZnshinfo {
    //流水号
    @TableId
    private String lsh;

    @TableField(exist = false)
    @ToString.Exclude
    private String jylsh;

    private Integer jycs;

    //业务类型
    private String ywlx;

    //业务原因
    private String ywyy;

    //号牌种类
    private String hpzl;

    //号牌号码
    private String hphm;

    //车辆识别代号
    private String clsbdh;

    //机动车所有人
    private String syr;

    //保险生效日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date sxrq;

    //保险终止日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date zzrq;

    //车辆类型
    private String cllx;

    //使用性质
    private String syxz;

    //整备质量
    private String zbzl;

    //发动机/电动机号码
    private String fdjh;

    //车辆品牌
    private String clpp1;

    //车辆型号
    private String clxh;

    //初次登记日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date ccdjrq;

    //出厂日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date ccrq;

    //查验过程开始时间
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date kssj;

    //查验过程结束时间
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date jssj;

    //需要比对的照片总数
    private String zpzs;

    //需要比对的视频总数
    private String spzs;

    //行驶证证芯编号
    private String xszbh;

    //燃料种类
    private String rlzl;

    //发行驶证日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date fzrq;

    //车身颜色
    private String csys;

    //排量
    private String pl;

    //功率
    private BigDecimal  gl;

    //转向形式
    private String zxxs;

    //车外廓长
    private Integer cwkc;

    //车外廓宽
    private Integer cwkk;

    //车外廓高
    private Integer cwkg;

    //货箱内部长度
    private Integer hxnbcd;

    //货箱内部宽度
    private Integer hxnbkd;

    //货箱内部高度
    private Integer hxnbgd;

    //钢板弹簧片数
    private Integer gbthps;

    //轴数
    private Integer zs;

    //轴距
    private Integer zj;

    //前轮距
    private Integer qlj;

    //后轮距
    private Integer hlj;

    //轮胎规格
    private String ltgg;

    //轮胎数
    private Integer lts;

    //总质量
    private Integer zzl;

    //核定载质量
    private Integer hdzzl;

    //核定载客
    private Integer hdzk;

    //准牵引总质量
    private Integer zqyzl;

    //驾驶室前排载客人数
    private Integer qpzk;

    //驾驶室后排载客人数
    private Integer hpzk;

    //车辆用途
    private String clyt;

    //用途属性
    private String ytsx;

    //是否新能源汽车 1-是；2-否
    private String sfxny;

    //新能源汽车种类
    private String xnyzl;

    //英文品牌
    private String clpp2;

    //国产/进口
    private String gcjk;

    //制造国
    private String zzg;

    //制造厂名称
    private String zzcmc;

    //最近定检日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date djrq;

    //检验有效期止
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date yxqz;

    //强制报废期止
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date qzbfqz;

    //发证机关
    private String fzjg;

    //管理部门
    private String glbm;

    //机动车状态
    private String zt;

    //抵押标记 0-未抵押；1-已抵押
    private String dybj;

    //发动机型号
    private String fdjxh;

    //环保达标情况
    private String hbdbqk;

    //检验合格标志
    private String jyhgbzbh;

    //管理辖区
    private String xzqh;

    //住所行政区划
    private String zsxzqh;

    //暂住行政区划
    private String zzxzqh;

    //查验区序号
    private String cyqxh;

    //机动车序号
    private String xh;

    //查验员身份证明号码
    private String cyry;

    //发登记证书日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date fdjrq;

    //发合格标志日期
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date fhgzrq;

    //审核状态 0——未审核 1——通过 4——建议人工 5——不通过
    private String shzt;

    //创建时间
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date cjsj;

    //审核通过操作状态
    private String czzt;

    //申请审核时间
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date sqshsj;

    //审核类别,0：查验；1：检验;  2:预审核
    private String shlb;

    //检验位
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @ToString.Exclude
    private String jyw;

    //检测机构代码
    private String jyjgbh;

    private String pzclfl;//配置车辆分类
    private String pzcllx;//配置车辆类型
    private String pzsyxz;//配置使用性质
    private String pzzpzl;//配置照片种类
    private String pzpzx;//配置配置项

    private String yczt;//审核是否异常（图片访问不了导致审核失败）0:正常；1:异常
    private String shbtgx;//审核不通过项（照片种类）
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date gxsj;//更新时间
    @JSONField(format="yyyy/MM/dd HH:mm:ss")
    private Date jyrq;//检验日期
    private String jylb;//检验类别
    private String sjr;//送检人
    private String syrlxdh;//所有人联系电话
    private String jyxm;//检验项目

    // 加这个方法，将所有String字段的null转成""
    public void nullStringsToEmpty() {
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            if (field.getType() == String.class) {
                field.setAccessible(true);
                try {
                    if (field.get(this) == null) {
                        field.set(this, "");
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
